package es.aqua.aquac.util;

import java.util.Iterator;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.web.authentication.WebAuthenticationDetails;

public class Auditoria {
	/**
	 * Metodo de auditoria que obtiene el usuario.
	 * 
	 * @return String
	 */
	public String obtenerUsuario() {
		String strUsuario = "";
		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
		if (auth != null) {
			Object obj = auth.getPrincipal();
			UserDetails ud = (UserDetails) obj;
			strUsuario = ud.getUsername();
		}
		return strUsuario;
	}

	/**
	 * Metodo de auditoria que obtiene el rol del usuario.
	 * 
	 * @return String
	 */
	@SuppressWarnings("rawtypes")
	public String obtenerRol() {
		String strRol = "";
		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
		if (auth != null && auth.getAuthorities().size() > 0) {
			Iterator it = auth.getAuthorities().iterator();
			strRol = it.next().toString();
		}
		return strRol;
	}

	/**
	 * Metodo de auditoria que obtiene el puesto.
	 * 
	 * @return String
	 */
	public String obtenerPuesto() {
		String strPuesto = "";
		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
		if (auth != null) {
			strPuesto = ((WebAuthenticationDetails) auth.getDetails()).getRemoteAddress();
		}
		return strPuesto;
	}
}
